λ stack clean
キャッシュの削除?
強い版が--fullオプション
GPT-4.icon
stack clean は、Haskellプロジェクトをビルドツール Stack で管理する際に使用されるコマンドで、プロジェクトのビルド成果物やキャッシュを削除します。このコマンドは、クリーンな状態からビルドをやり直したいときに便利です。
---
stack cleanの役割
1. ビルド成果物の削除:
プロジェクト内で生成された中間ファイルやバイナリファイルを削除します。
通常、stack build 実行時に .stack-work ディレクトリに生成されるファイルが対象です。
2. キャッシュの削除:
コンパイルの中間生成物(.o や .hi ファイル)を含むキャッシュを削除して、次回ビルド時に再生成します。
3. 問題解決:
ビルドが壊れたり、意図しない挙動が発生した場合に、プロジェクトをリセットして再ビルドするために使用します。
---
使い方
code:bash
一般的な使い方
プロジェクト全体のクリーンアップ:
code:bash
stack clean
プロジェクトの .stack-work ディレクトリ内のキャッシュや成果物を削除します。
特定のパッケージをクリーンアップ:
code:bash
stack clean package-name
複数のパッケージが存在する場合、特定のパッケージだけの成果物を削除します。
---
どのような時に使うか
1. ビルドエラーや不整合が発生した場合:
例えば、依存関係が壊れている、古い成果物が混在しているなど、再ビルドで問題を解決したいときに便利です。
2. プロジェクトの状態をリセットしたい場合:
新しい依存関係を追加したり、stack.yaml を更新した後にキャッシュが原因で問題が発生した場合。
3. ディスクスペースを確保したい場合:
ビルド成果物やキャッシュが増えすぎてディスク容量を圧迫している場合、不要な成果物を削除します。
---
オプション
--full:
code:bash
stack clean --full
通常のキャッシュ削除に加えて、依存関係のキャッシュも削除します。依存関係をすべて再ダウンロードする必要があるため、時間がかかる場合があります。
特定のパッケージ:
code:bash
stack clean package-name
複数パッケージのプロジェクトで、特定のパッケージだけをクリーンアップします。
---
関連するディレクトリ
.stack-work:
プロジェクトごとのキャッシュやビルド成果物が保存されるディレクトリ。
stack clean 実行後、このディレクトリが削除またはリセットされます。
~/.stack/:
ツールや依存関係全体のキャッシュディレクトリ。
stack clean --full を使うとここも影響を受けることがあります。
---
注意点
1. 時間がかかる場合がある:
キャッシュ削除後、再ビルドには時間がかかることがあります。
2. 依存関係に影響しない(通常のcleanでは):
stack clean はプロジェクトのキャッシュを削除しますが、依存関係自体には影響を与えません。ただし、--full を使用すると依存関係の再ダウンロードが必要になります。
---
関連コマンド
クリーンアップ後に再ビルドするために使用します。
Stack全体のキャッシュを削除します(~/.stack/ のデータ)。